package com.itany.corejava.code06_数组;

import java.util.Arrays;

/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年10月27日 13:40
 */
public class Test07_值传递和引用传递 {
    public static void main(String[] args) {

        //值传递
        // 在栈内存中开辟了一块空间，空间名为i，值为10
        int i=10;

        //在栈内存中开辟了一块空间，空间名为i2，值为10
        // 当修改i2的时候，是直接修改了i2的空间的值
        // 对于i没有任何影响
        int i2=i;
        i2=100;
        System.out.println(i);
        System.out.println(i2);


        //引用传递（传递的是地址，按引用传递）
        //在堆中开辟了一串连续的空间，用于存放具体的数据
        // 在栈内存中开辟了一块空间，存放堆内存的首地址
        int[] arr={10,20,50};

        //在栈内存中开辟了一块空间，将arr栈中的值赋值给了arr2
        // 此时arr2中在栈内存中存储的也是堆中数组的首地址
        // 此时arr和arr2指向了同一个堆内存区域
        int[] arr2=arr;

        //当修改了堆内存中的某一个元素的值时，arr的值也随之改变了
        arr2[0]=90;
        System.out.println(Arrays.toString(arr));
        System.out.println(Arrays.toString(arr2));



    }
}
